1. 함수 옮기기

함수를 한 곳에서 다른 곳으로 이동
다음 여러 가지 형태를 보일 수 있음

  • inner 함수를 최상위로 이동
  • A 클래스의 메서드를 B 클래스로 이동
  • A 모듈의 함수를 B 모듈로 이동
  • 기타
    • 함수가 자신이 속한 모듈의 요소들보다 다른 모듈의 요소들을 더 많이 참조할 때
    • 다른 함수 안에서 도우미 역할로 정의된 함수 중 독립적인 가치가 있는 함수가 있을 때

절차


  1. 선택한 함수가 현재 컨텍스트에서 사용 중인 모든 프로그램 요소를 살펴본다. 이 요소들 중에도 함께 옮겨야 할 게 있는지 고민해본다.
  2. 선택한 함수가 다형 메서드인지 확인한다.
  3. 선택한 함수를 타깃 컨텍스트로 복사한다. 타깃 함수가 새로운 터전에 잘 자리 잡도록 다듬는다.
  4. 정적 분석을 수행한다.
  5. 소스 컨텍스트에서 타깃 함수를 참조할 방법을 찾아 반영한다.
  6. 소스 함수를 타깃 함수의 위임 함수가 되도록 수정한다.
  7. 테스트한다.
  8. 소스 함수를 인라인(6.2)할지 고민해본다.

예시 코드

😞 Before

class Account {
    get overdraftCharge() {
    // ...
    }
}

😃 After

class Account {
    get overdraftCharge() {
    return this.type.overdraftCharge()
    }
}

class AccountType {
    get overdraftCharge() {
    // ...
    }
}

results matching ""

    No results matching ""